// 加载express框架
const express = require('express');
// 加载express-session模块
const session = require('express-session');
// 加载path模块
const path = require('path');
// 加载body-parser模块
const bodyParser = require('body-parser');
// 加载日期时间格式
const dateformat = require('dateformat');
// 加载模板
const template = require('art-template');
// 加载模块
const morgan = require('morgan');
// 加载config模块
const config = require('config');
// 创建服务器
const app = express();
// 拦截所有请求
app.use(bodyParser.urlencoded({ extended: false }));
// app.use(bodyParser.json());
app.use(session({
    secret: 'secret key',
    saveUninitialized: false,
    cookie: {
        maxAge: 24 * 60 * 60 * 1000
    }
}));
// 静态资源访问
app.use(express.static(path.join(__dirname, 'public')));
// 
template.defaults.imports.date = dateformat;

// 渲染模板引擎的方式
app.engine('art', require('express-art-template'));
// 模板引擎的路径
app.set('views', path.join(__dirname, 'views'));
// 模板引擎默认后缀
app.set('view engine', 'art');

// 服务器模块
require('./model/connect');
// require('./model/user');

// console.log(config.get('title'));

// 生产环境/开发环境
if (process.env.NODE_ENV == 'development') {
    console.log('当前环境为开发环境');
    // app.use(morgan('dev'));
} else {
    console.log('当前环境为生产环境');
}


// 引入路由模块
const home = require('./route/home.js');
const admin = require('./route/admin.js');

// 拦截请求
app.use('/admin', require('./middleware/middle'));

// 创建一级路由路径
app.use('/home', home);
app.use('/admin', admin);

// 错误处理对象
app.use((err, req, res, next) => {
    // 将字符串转换为对象类型
    const result = JSON.parse(err);
    let params = [];
    for (let attr in result) {
        if (attr != 'path') {
            params.push(attr + '=' + result[attr]);
        }
    }
    res.redirect(`${result.path}?${params.join('&')}`);
});

// 监听端口
app.listen(3000);

console.log('服务器启动成功,请访问localhost');